package com.example.demo.order;

import com.example.demo.domain.Order;
//import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;

/**
 * Created by fandg on 2020/3/30.
 */
//@FeignClient(name = "order-service01")
public interface OrderService {

    @RequestMapping(value="/order/list", method= RequestMethod.GET)
    List<Order> orderList();
    @RequestMapping(value="/order/one", method= RequestMethod.GET)
    Order getOrder(Long id);

    //void insertOrder(Order order);

//    int updateOrder(Order order);

    /**
     * 测试GET请求的方法。
     * 请求不传递任何的参数。
     * 请求地址是 - /testFeign  -> http://ip:port/testFeign
     * @return
     */
//    @RequestMapping(value="/testFeign", method=RequestMethod.GET)
//    public List<String> testFeign();

    /**
     * 测试GET请求传递一个普通的参数。  /get?id=xxx
     * 在为Feign定义服务标准接口的时候，处理请求参数的方法参数，必须使用@RequestParam注解描述。
     * 并且，无论方法参数名和请求参数名是否一致，都需要定义@RequestParam注解的value/name属性。
     * @return
     */
//    @RequestMapping(value="/get", method=RequestMethod.GET)
//    public FeignTestPOJO getById(@RequestParam(value="id") Long id);

    /**
     * 测试使用POST请求传递一个普通参数
     * 在Feign技术中，默认的发起POST请求的时候，请求的参数，都是在请求体中使用JSON数据传递的。
     * 不是name=value对传递的。
     * 必须使用@RequestBody注解来解析请求体中的数据。
     *
     * 如果使用POST方式发起请求，传递多个普通参数，是使用请求头传递的参数。可以使用@RequestParam注解来处理请求参数。
     * POST请求的请求体类型还是application/json。feign会通过请求头传递多个请求参数： /xxx?a=xxx&b=xxx&c=xxx
     * @return
     */
//    @RequestMapping(value="/get", method=RequestMethod.POST)
//    public FeignTestPOJO getByIdWithPOST(@RequestBody Long id);

    /**
     * 使用GET请求传递多个普通参数。 /add?id=xxx&name=xxx
     * 必须使用@RequestParam注解处理请求参数。
     * @return
     */
//    @RequestMapping(value="/add", method=RequestMethod.GET)
//    public FeignTestPOJO add(@RequestParam("id") Long id, @RequestParam("name") String name);
}
